package org.safaproject.safa.services.impl;

import java.util.List;

import org.safaproject.safa.dao.GenericHibernateDAO;
import org.safaproject.safa.entities.MoldeTag;
import org.safaproject.safa.entities.Tag;
import org.safaproject.safa.services.TagsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

@Component
@Repository
public class TagsServiceImpl implements TagsService{
	
	@Autowired
	private GenericHibernateDAO<Tag, Long> tagDAO;
	
	@Autowired
	private GenericHibernateDAO<MoldeTag, String> moldeTagDAO;

	@Override
	@Transactional
	public List<Tag> getAllTags() {
		crearAlgunosTagsDePrueba();
		return tagDAO.findAll();
	}

	private void crearAlgunosTagsDePrueba() {
		MoldeTag universidad = new MoldeTag();
		universidad.setNombreTag("Universidad");
		universidad = moldeTagDAO.makePersistent(universidad);
		
		MoldeTag materia = new MoldeTag();
		materia.setNombreTag("Materia");
		materia = moldeTagDAO.makePersistent(materia);
		
		Tag utn = new Tag();
		utn.setMoldeTag(universidad);
		utn.setValor("UTN");
		utn = tagDAO.makePersistent(utn);
		
		Tag discreta = new Tag();
		discreta.setMoldeTag(materia);
		discreta.setValor("Discreta");
		discreta = tagDAO.makePersistent(discreta);
		
	}

	public void setMoldeTagDAO(GenericHibernateDAO<MoldeTag, String> moldeTagDAO) {
		this.moldeTagDAO = moldeTagDAO;
	}

	public GenericHibernateDAO<MoldeTag, String> getMoldeTagDAO() {
		return moldeTagDAO;
	}

	public void setTagDAO(GenericHibernateDAO<Tag, Long> tagDAO) {
		this.tagDAO = tagDAO;
	}

	public GenericHibernateDAO<Tag, Long> getTagDAO() {
		return tagDAO;
	}
}
